* Set up the per-thread TLS descriptor cache:
*/
memcpy(thread->tls_array, &get_cpu_gdt_table(cpu)[GDT_ENTRY_TLS_MIN],
- GDT_ENTRY_TLS_ENTRIES * 8);
+ GDT_ENTRY_TLS_ENTRIES * 8);
cpu_gdt_init(&cpu_gdt_descr[cpu]);
#include <linux/config.h>
.section __xen_guest
- .ascii "GUEST_OS=linux,GUEST_VER=2.6,XEN_VER=3.0,VIRT_BASE=0xC0000000"
+ .ascii "GUEST_OS=linux,GUEST_VER=2.6"
+ .ascii ",XEN_VER=3.0"
+ .ascii ",VIRT_BASE=0xC0000000"
.ascii ",LOADER=generic"
.byte 0
/* 1. Zap current PTEs, giving away the underlying pages. */
for (i = 0; i < (1<<order); i++) {
- pgd = pgd_offset_k( (vstart + (i*PAGE_SIZE)));
- pud = pud_offset(pgd, (vstart + (i*PAGE_SIZE)));
- pmd = pmd_offset(pud, (vstart + (i*PAGE_SIZE)));
- pte = pte_offset_kernel(pmd, (vstart + (i*PAGE_SIZE)));
- pfn = pte->pte_low >> PAGE_SHIFT;
- HYPERVISOR_update_va_mapping(
- vstart + (i*PAGE_SIZE), __pte_ma(0), 0);
+ pgd = pgd_offset_k(vstart + (i*PAGE_SIZE));
+ pud = pud_offset(pgd, vstart + (i*PAGE_SIZE));
+ pmd = pmd_offset(pud, vstart + (i*PAGE_SIZE));
+ pte = pte_offset_kernel(pmd, vstart + (i*PAGE_SIZE));
+ pfn = pte_val_ma(*pte) >> PAGE_SHIFT;
+ HYPERVISOR_update_va_mapping(vstart + (i*PAGE_SIZE),
+ __pte_ma(0), 0);
phys_to_machine_mapping[(__pa(vstart)>>PAGE_SHIFT)+i] =
INVALID_P2M_ENTRY;
if (HYPERVISOR_dom_mem_op(MEMOP_decrease_reservation,
&pfn, 1, order) != 1) BUG();
/* 3. Map the new extent in place of old pages. */
for (i = 0; i < (1<<order); i++) {
- pgd = pgd_offset_k( (vstart + (i*PAGE_SIZE)));
- pud = pud_offset(pgd, (vstart + (i*PAGE_SIZE)));
- pmd = pmd_offset(pud, (vstart + (i*PAGE_SIZE)));
- pte = pte_offset_kernel(pmd, (vstart + (i*PAGE_SIZE)));
- HYPERVISOR_update_va_mapping(
- vstart + (i*PAGE_SIZE),
+ HYPERVISOR_update_va_mapping(vstart + (i*PAGE_SIZE),
__pte_ma(((pfn+i)<<PAGE_SHIFT)|__PAGE_KERNEL), 0);
- xen_machphys_update(
- pfn+i, (__pa(vstart)>>PAGE_SHIFT)+i);
- phys_to_machine_mapping[(__pa(vstart)>>PAGE_SHIFT)+i] =
- pfn+i;
+ xen_machphys_update(pfn+i, (__pa(vstart)>>PAGE_SHIFT)+i);
+ phys_to_machine_mapping[(__pa(vstart)>>PAGE_SHIFT)+i] = pfn+i;
}
flush_tlb_all();
dma_addr_t *dma_handle, int gfp)
{
void *ret;
+ struct dma_coherent_mem *mem = dev ? dev->dma_mem : NULL;
unsigned int order = get_order(size);
unsigned long vstart;
-
- struct dma_coherent_mem *mem = dev ? dev->dma_mem : NULL;
-
/* ignore region specifiers */
gfp &= ~(__GFP_DMA | __GFP_HIGHMEM);
vstart = __get_free_pages(gfp, order);
ret = (void *)vstart;
- if (ret == NULL)
- return ret;
-
- xen_contig_memory(vstart, order);
- memset(ret, 0, size);
- *dma_handle = virt_to_bus(ret);
+ if (ret != NULL) {
+ xen_contig_memory(vstart, order);
+ memset(ret, 0, size);
+ *dma_handle = virt_to_bus(ret);
+ }
return ret;
}
desc->b = LDT_entry_b(&info);
}
- p->thread.io_pl = current->thread.io_pl;
+ p->thread.io_pl = current->thread.io_pl;
err = 0;
out:
physdev_op_t iopl_op, iobmp_op;
multicall_entry_t _mcl[8], *mcl = _mcl;
- /* XEN NOTE: FS/GS saved in switch_mm(), not here. */
+ /* XEN NOTE: FS/GS saved in switch_mm(), not here. */
/*
* This is basically '__unlazy_fpu', except that we queue a
#include <linux/efi.h>
#include <linux/init.h>
#include <linux/edd.h>
+#include <linux/kernel.h>
#include <linux/percpu.h>
#include <linux/notifier.h>
#include <video/edid.h>
/* Allows setting of maximum possible memory size */
static unsigned long xen_override_max_pfn;
-extern struct notifier_block *panic_notifier_list;
static int xen_panic_event(struct notifier_block *, unsigned long, void *);
static struct notifier_block xen_panic_block = {
- xen_panic_event,
- NULL,
- 0 /* try to go last */
+ xen_panic_event, NULL, 0 /* try to go last */
};
-
int disable_pse __initdata = 0;
/*
return 0;
}
+
/*
* Find the highest page frame number we have available
*/
*/
void __init setup_arch(char **cmdline_p)
{
- int i,j;
+ int i, j;
physdev_op_t op;
unsigned long max_low_pfn;
/* Force a quick death if the kernel panics. */
extern int panic_timeout;
- if ( panic_timeout == 0 )
+ if (panic_timeout == 0)
panic_timeout = 1;
/* Register a call for panic conditions. */
notifier_chain_register(&panic_notifier_list, &xen_panic_block);
- HYPERVISOR_vm_assist(
- VMASST_CMD_enable, VMASST_TYPE_4gb_segments);
- HYPERVISOR_vm_assist(
- VMASST_CMD_enable, VMASST_TYPE_writable_pagetables);
+ HYPERVISOR_vm_assist(VMASST_CMD_enable, VMASST_TYPE_4gb_segments);
+ HYPERVISOR_vm_assist(VMASST_CMD_enable,
+ VMASST_TYPE_writable_pagetables);
memcpy(&boot_cpu_data, &new_cpu_data, sizeof(new_cpu_data));
early_cpu_init();
init_mm.start_code = (unsigned long) _text;
init_mm.end_code = (unsigned long) _etext;
init_mm.end_data = (unsigned long) _edata;
- init_mm.brk = (PFN_UP(__pa(xen_start_info.pt_base)) + xen_start_info.nr_pt_frames) << PAGE_SHIFT;
+ init_mm.brk = (PFN_UP(__pa(xen_start_info.pt_base)) +
+ xen_start_info.nr_pt_frames) << PAGE_SHIFT;
/* XEN: This is nonsense: kernel may not even be contiguous in RAM. */
/*code_resource.start = virt_to_phys(_text);*/
max_pfn * sizeof(unsigned long));
if (max_pfn > xen_start_info.nr_pages) {
- /* set to INVALID_P2M_ENTRY */
+ /* set to INVALID_P2M_ENTRY */
memset(phys_to_machine_mapping, ~0,
max_pfn * sizeof(unsigned long));
memcpy(phys_to_machine_mapping,
}
}
-
static int
xen_panic_event(struct notifier_block *this, unsigned long event, void *ptr)
{
- HYPERVISOR_crash();
- /* we're never actually going to get here... */
- return NOTIFY_DONE;
+ HYPERVISOR_crash();
+ /* we're never actually going to get here... */
+ return NOTIFY_DONE;
}
-
#include "setup_arch_post.h"
/*
* Local Variables:
if ( !test_and_set_bit(0, &printed) )
{
- HYPERVISOR_vm_assist(
- VMASST_CMD_disable, VMASST_TYPE_4gb_segments_notify);
+ HYPERVISOR_vm_assist(VMASST_CMD_disable,
+ VMASST_TYPE_4gb_segments_notify);
DP("");
DP("***************************************************************");
static int __init fixup_init(void)
{
- HYPERVISOR_vm_assist(
- VMASST_CMD_enable, VMASST_TYPE_4gb_segments_notify);
+ HYPERVISOR_vm_assist(VMASST_CMD_enable, VMASST_TYPE_4gb_segments_notify);
return 0;
}
__initcall(fixup_init);
static inline unsigned long pgd_val(pgd_t x)
{
unsigned long ret = x.pgd;
- if (ret) ret = machine_to_phys(ret) | 1;
+ if (ret) ret = machine_to_phys(ret);
return ret;
}
#define pgprot_val(x) ((x).pgprot)